A dual in-line memory module (DIMM) comprises a series of dynamic random access memory integrated circuits. The modules are mounted on a printed circuit board and designed for use in personal computers, workstations, servers, and other systems. For various technologies, various bus and device clock frequencies are standardized.
A DIMM's capacity and timing parameters may be identified with Serial Presence Detect (SPD), generally an additional integrated circuit chip which contains information about the module type.
Conventional DIMM SPD registers only contain operating parameters that are specific to one voltage, frequency, and temperature. Joint Electron Device Engineering Council (JEDEC) standard 79-3A (DDR3 SDRAM Specification, September 2007) specifies operating parameters that are frequency dependent, but parameters for only one frequency (a “speed-bin”) are supported in the SPD register. If desired to operate a DIMM at a slower speed than the DIMM's design speed, a conventional system enables hard-coding into system firmware of relevant operating parameters obtained from system tests at a voltages, frequencies, or temperatures that are different from conditions at which the memory, for example DRAM (dynamic random access memory), is tested. Such hard-coding of system firmware generally adds firmware complexity for selecting operating parameters that are optimal for multiple types of DIMMs, voltages, frequencies, and temperatures. Furthermore, hard-coding of system firmware can lead to unpredictable performance since different system designers can program different custom values for the parameters. Each system integrator may test the memory at a variety of different speeds and settings to determine the optimal settings for each configuration. Unfortunately, such testing involves a long process for each integrator and any information attained is not available to all users of the DIMM. Additionally, the information is not stored with the part but instead in a separate location on each system that would have to be updated regularly as new parts become available. No standardization exists for determining timings for parts running at a frequency different than the vendor-specified frequency.